package Tree;

/**
 * File Name: BinaryTree
 * Date: 2020-07-23 10:30
 * Author: liangling
 * Description
 */
public class BinaryTree {


    public TreeNode root;

    public void setRoot(TreeNode root) {
        this.root = root;
    }

    /**
     * 前序遍历二叉树
     */
    public void preOrder() {
        if (this.root != null) {
            this.root.preOrder();
        } else {
            System.out.println("二叉树为空无法遍历");
        }
    }


    /**
     * 中序遍历二叉树
     */
    public void midOrder() {
        if (this.root != null) {
            this.root.midOrder();
        } else {
            System.out.println("二叉树为空无法遍历");
        }
    }

    /**
     * 后序遍历二叉树
     */
    public void lastOrder() {
        if (this.root != null) {
            this.root.lastOrder();
        } else {
            System.out.println("二叉树为空无法遍历");
        }
    }

    /**
     * 前序查找指定值返回查找结果
     * @param no
     * @return
     */
    public TreeNode preSearch(int no){
        if (root != null){
          return   root.preSearch(no);
        }else {
            return null;
        }
    }

    /**
     * 中序查找指定值返回查找结果
     * @param no
     * @return
     */
    public TreeNode midSearch(int no){
        if (root !=null){
            return root.midSerch(no);
        }else{
            return null;
        }
    }

    /**
     * 后序查找指定值返回查找结果
     * @param no
     * @return
     */
    public TreeNode lastSearch(int no){
        if (root!=null){
            return root.lastNode(no);
        }else {
            return null;
        }
    }

    /**
     * 删除节点
     * @param no
     */
    public void delNode(int no){
        if (root != null){

            if (root.getNo() == no){
                root = null;
            }else{
                root.delNode(no);
            }
        }else{
            System.out.println("空树不能删除");
        }
    }

    public static void main(String[] args) {
        //创建二叉树
        BinaryTree binaryTree = new BinaryTree();
//        //创建需要的节点
        TreeNode root = new TreeNode(1, "宋江");
        TreeNode node2 = new TreeNode(2, "吴用");
        TreeNode node3 = new TreeNode(3, "卢俊义");
        TreeNode node4 = new TreeNode(4, "林冲");
        TreeNode node5 = new TreeNode(5, "武松");
        TreeNode node6 = new TreeNode(6,"武大郎");
        TreeNode node7 = new TreeNode(7,"西门庆");

        root.setLeft(node2);
        root.setRight(node3);
        node2.setLeft(node4);
        node2.setRight(node5);
        node3.setRight(node6);
        node3.setLeft(node7);
        binaryTree.setRoot(root);
//        System.out.println("前序遍历");
//        binaryTree.preOrder();
        System.out.println("中序遍历");
        binaryTree.midOrder();
//        System.out.println("后序遍历");
//        binaryTree.lastOrder();
//
//
//        TreeNode treeNode = null;
//       treeNode = binaryTree.midSearch(5);
//
//
//       if(treeNode != null){
//           System.out.println("找到了"+treeNode.getName()+"----"+treeNode.getNo());
//       }else{
//           System.out.println("不存在：");
//
//       }

//        System.out.println("删除前，前序遍历");
//        binaryTree.preOrder();
//
////       binaryTree.delNode(5);
//        binaryTree.delNode(5);
//        System.out.println("删除后前序遍历");
//        binaryTree.preOrder();

    }
}
